package com.young.shop.service;

import com.young.shop.pojo.entity.User;

import javax.servlet.http.HttpServletRequest;

public interface UserService {

    /**
     *保存用户信息
     * @param user
     * @return  保存用户信息，包括了id
     */
    User save(User user);

    /**
     * 根据邮箱账号账号判断 是否存在
     * @return  true 代表已存在  false代表不存在
     */
    boolean existsByUserEmail (User user);

    /**
     * 校验登录通过用户名
     * @param user
     * @return 登录成功：用户信息
     * @throw RuntimeException(错误信息)：登录失败
     */
    User checkLoginByUserName(User user);

    /**
     * 校验登录通过邮箱
     * @return 登录成功：用户信息
     * @throw RuntimeException(错误信息)：登录失败
     */
    User checkRegisterByEmail(User user);


    /**
     * 校验注册email、密码、验证码
     * @param user
     * @return
     * @throw RuntimeException(错误信息)：登录失败
     */
    User checkRegisterParams(User user,String code,String checkBox);

    /**
     * 根据session的id来修改用户的数据
     * @param user
     * @return
     */
    User updateUser(long id,User user);

    /**
     * 通过id修改用户信息
     * @param user
     * @param id
     * @return  成功返回用户对象，失败返回错误信息
     */
    User NewOldUser(User user,long id);

    /**
     * 登录之后，修改用户名
     * @param req
     */
    User changePassword(HttpServletRequest req,User user);


    /**
     * 校验要修改的Email是否为空 是否已存在 验证码是否正确
     * @param user
     * @param email
     * @param code
     * @return  修改成功返回一个新的user对象，失败就抛错误信息
     */
    User verifyEmail(User user,String email,String code);
}
